﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acFrotaCombustiveis : PageBase 
{

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                CarregaComboCombustivel(rcbCombustivel);
                OcultaCampos(true);
            }
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
            OcultaCampos(true);
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        try
        {
            Pesquisa();
            rgCombustivel.DataBind();
            OcultaCampos(false);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
            OcultaCampos(true);
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        try
        {
            foreach (RadComboBoxItem item in rcbCombustivel.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                chk.Checked = true;
            }
            rcbCombustivel.Text = "";

            OcultaCampos(true);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgCombustivel_ItemCreated(object sender, GridItemEventArgs e)
    {
        try
        {
            if (e.Item is GridDataItem)
            {
                HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
                editLink.Attributes["href"] = "#";
                editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdFrotaCombustivel"], e.Item.ItemIndex);
            }
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgCombustivel_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        try
        {
            Pesquisa();
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        try
        {
            CarregaComboCombustivel(rcbCombustivel);
            Pesquisa();
            rgCombustivel.DataBind();
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }
    #endregion

    #region Metodos
    private void CarregaComboCombustivel(RadComboBox _combo)
    {
        try
        {
            FrotaCombustivel combustivel = new FrotaCombustivel();

            _combo.DataSource = combustivel.SelectAll();
            _combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }

    private void Pesquisa()
    {
        try
        {
            rgCombustivel.DataSource = CarregaCombustiveis();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private int[] ObterCodigoCombustivel(RadComboBox _combo)
    {
        try
        {
            List<int> listCodigo = new List<int>();

            foreach (RadComboBoxItem item in _combo.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    listCodigo.Add(int.Parse(item.Value));
                }
            }

            int[] codigo = new int[listCodigo.Count];
            for (int i = 0; i < listCodigo.Count; i++)
            {
                codigo[i] = listCodigo[i];
            }

            return codigo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private List<FrotaCombustivel> CarregaCombustiveis()
    {
        try
        {
            FrotaCombustivel combustivel = new FrotaCombustivel();
            List<FrotaCombustivel> listCombustivel = new List<FrotaCombustivel>();

            int[] idcombustivel = ObterCodigoCombustivel(rcbCombustivel);

            if (idcombustivel.Count() == 0)
                throw new Exception("É necessário selecionar ao menos um combustível para efetuar a pesquisa!");

            listCombustivel = combustivel.SelectPor(idcombustivel);

            return listCombustivel;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        trMensagem.Visible = !oculta;
    }
    #endregion

}
